#应用的入口,用来调用其他模块

from admin.StudentInfoManagement import StudentInfoManagement as sim
from domain.Student import Student 

#打印菜单
def menu():
    print("###########################欢迎来到NEU学生管理系统#########################")
    print("#                                                                       #")
    print("#                                 -   -                                 #")
    print("#                                   √                                   #")
    print("#  ⚪ 1.管理员                                                          #")
    print("#  ⚪ 2.学生                                                            #")
    print("#########################################################################")
    userType=input("请选择您的身份:")
    return userType

#管理员菜单
def adminMenu():
    print("#######################     欢迎来到管理员模块     ########################")
    print("#                                                                       #")
    print("#                                 -   -                                 #")
    print("#                                   √                                   #")
    print("#  ⚪ 1.学生信息管理                                                     #")
    print("#   ⚪  1.1 学生信息查询                                                 #")
    print("#   ⚪  1.2 增加学生信息                                                 #")
    print("#   ⚪  1.3 删除学生信息                                                 #")
    print("#   ⚪  1.4 更改学生信息                                                 #")
    print("#  ⚪ 2.课程信息管理                                                     #")
    print("#   ⚪  2.1 查询课程信息                                                 #")
    print("#   ⚪  2.2 增加课程信息                                                 #")
    print("#   ⚪  2.3 删除课程信息                                                 #")
    print("#   ⚪  2.4 更改课程信息                                                 #")
    print("#  ⚪ 3.成绩信息管理                                                     #")
    print("#   ⚪  3.1 查询成绩信息                                                 #")
    print("#   ⚪  3.2 增加成绩信息                                                 #")
    print("#   ⚪  3.3 删除成绩信息                                                 #")
    print("#   ⚪  3.4 更改成绩信息                                                 #")
    print("#  ⚪ 0.返回首页                                                         #")
    print("##########################################################################")
    userType=input("请输入您的选择:")
    return userType

#根据用户输入,生成一个学生对象
def generateStudent():
    id=input("请输入学号:")
    name=input("请输入姓名:")
    age=input("请输入年龄:")
    return Student(id,name,age)

#学生信息管理具体功能实现
def studentInfoManage(userType):
    if(userType=='1.1'):
        print("增加学生")
        student=generateStudent()
        sim.add_student(student)
    elif(userType=='1.2'):
        print('查询学生')
    elif(userType=='1.3'):
        print('删除学生')
    elif(userType=='1.4'):
        print("更新学生信息")

def checkAdminInput(userType):
    avlSet={"1.1",'1.2','1.3','1.4',
                "2.1",'2.2','2.3','2.4',
                "3.1",'3.2','3.3','3.4','0'}
    
    if(userType not in avlSet):
    #if(~avlSet.__contains__(userType)):
        #您输入有误
        print("您输入的身份有误,请重新输入!")
        checkAdminInput(input("请选择您的身份:"))
        
    if(userType.startswith("1.")):
        #学生信息管理
        studentInfoManage(userType)
    elif(userType.startswith("2.")):
        #课程信息管理
        print("课程信息管理")
    elif(userType.startswith("3.")):
        #成绩信息管理
        print("成绩信息管理") 
    else:
        menu()

#管理员模块
def admin():
    print("admin")
    checkAdminInput(adminMenu())

#学生模块
def student():
    print("student")

#检查用户身份
def checkUserType(userType):
    if(userType=='1'):
        #管理员
        admin()
    elif(userType=='2'):
        #学生
        student()
    else:
        #您输入有误
        print("您输入的身份有误,请重新输入!")
        checkUserType(input("请选择您的身份:"))
        #Todo 加入限制次数

#主流程
if __name__ == "__main__":
    #菜单
    userType=menu()
    #检查用户身份
    checkUserType(userType)
    
    

